home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / SCREEN.SWG / 0065_Read Character Function.pas < prev    next >
Pascal/Delphi Source File  |  1994-05-25  |  1KB  |  43 lines

  1.  
  2. (*
  3.  IL> Use the memw array to read one word. The low byte is the attribute
  4.  IL> (color) and the other is the character.
  5.  IL>
  6.  IL> var ch:word; x,y:byte;
  7.  IL> begin
  8.  IL>  {get x,y then read}
  9.  IL>  ch:=MEMW[$b800:y*25+x-1];
  10.  IL> end.
  11.  IL>
  12.  IL> The numbers might be off, but that's the idea.
  13.  
  14. Ouch. You screwed up there... This should do it:
  15.  
  16. (and I DON'T want some optimizations as 'shl ax,5' is faster than 'mov cl,5;
  17. shl ax,cl'. It is coded in this way to ensure downward compatiblity. Replace
  18. TextVidMem with either 0b000h or 0b800h, depending on your screen.)
  19. *)
  20.  
  21.       Function ReadCharThingy(x, y : Word) : Word; Assembler;
  22.        Asm
  23.         dec   x
  24.         dec   y
  25.  
  26.         mov   ax,y
  27.         mov   cl,5
  28.         shl   ax,cl
  29.         mov   si,ax
  30.         mov   cl,2
  31.         shl   ax,cl
  32.         add   si,ax
  33.         shl   x,1
  34.         add   si,x
  35.  
  36.         mov   ax,TextVideoMem
  37.         push  ds
  38.         mov   ds,ax
  39.         lodsw
  40.         pop   ds
  41.        End;
  42.  
  43.